package com.hxk.es.utils;

import com.hxk.es.bean.Good;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import java.net.URL;
import java.util.ArrayList;
import java.util.List;

/**
 * 爬去京东商品数据类
 */
public class HttpParseUtil {

    /**
     * 京东数据获取地址
     */
    private static final String URI = "https://search.jd.com/Search?keyword=";

    /**
     * 根据商品名称获取商品数据
     * @param goodName
     * @return
     * @throws Exception
     */
    public static List<Good> getGoodsByName(String goodName) throws Exception{

        List<Good> goods = new ArrayList<>();

        //发送url请求获取、获取请求相应html对象
        Document parse = Jsoup.parse(new URL(URI+goodName+"&enc=utf-8"), 3000);

        //获取页面中的boby
        Element body = parse.body();

        //从body中获取id为J_goodsList的元素
        Element goodsList = body.getElementById("J_goodsList");

        //再从J_goodsList元素中获取标签为li的所有元素
        Elements lis = goodsList.getElementsByTag("li");

        //遍历每一个li元素
        for (Element li : lis) {

            //获取li元素下的第一个，img元素
            String img = li.getElementsByTag("img").eq(0).attr("src");

            //获取li元素下class为p-price的第一个元素的内容
            String price = li.getElementsByClass("p-price").eq(0).text();

            //获取li元素下class为p-name的第一个元素的内容
            String name = li.getElementsByClass("p-name").eq(0).text();

            //封装成商品对象，并加入到商品集合中
            goods.add(new Good(img,name,price));
        }
        return goods;
    }

    public static void main(String[] args) {
        List<Good> vues = null;
        try {
            vues = HttpParseUtil.getGoodsByName("vue");
            vues.forEach(System.out::println);
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}
